//////////////////////////////////////////////////////////////////////////////////
/// \file Skew.h
/// \author Lukasz Madon
/// \author 7madon@novell.ftj.agh.edu.pl OR lukasgt@wp.pl
/// \version 1.0.1
/// \date 16-01-2010
/// \brief Deklaracja klasy Skew sluzacej do pochylen obrazow. Plik naglowkowy.
///////////////////////////////////////////////////////////////////////////////////

#ifndef SKEW_H
#define SKEW_H

#include <QBitmap>

#include "transform.h"

/////////////////////////////////////////////////////////////////////////
/// \class Skew
/// Klasa definujaca pochylenie obrazka. Dziedzyczy po klasie Transform.
/////////////////////////////////////////////////////////////////////////
class Skew : public Transform
{
public:   
   /////////////////////////////////////////////////////////////////////////
   /// Kostruktor domyslny.
   /////////////////////////////////////////////////////////////////////////
   Skew();

   /////////////////////////////////////////////////////////////////////////
   /// Destruktor.
   /////////////////////////////////////////////////////////////////////////
   ~Skew();

   /////////////////////////////////////////////////////////////////////////
   /// Metoda skewImage odpowiada za pochylenie obrazka.
   /// \param newImage wskaznik na obrazek ktory bedzie pochylany.
   /// \param valx wartosc pochylenia wzgledem osi x od 0 do 100.
   /// \param valy wartosc pochylenia wzgledem osi y od 0 do 100.
   /// \return Zwraca obrazek po pochyleniu jako wskaznik do QImage.
   /////////////////////////////////////////////////////////////////////////
   QImage* skewImage(QImage *newImage, int valx, int valy);

   /////////////////////////////////////////////////////////////////////////
   /// Metoda skewImageTwo odpowiada za pochylenie obrazka.
   /// \param newImage wskaznik na obrazek ktory bedzie pochylany.
   /// \param valx wartosc pochylenia wzgledem osi x od -50 do 50.
   /// \param valy wartosc pochylenia wzgledem osi y od -50 do 50.
   /// \return Zwraca obrazek po pochyleniu jako wskaznik do QImage.
   /////////////////////////////////////////////////////////////////////////
   QImage* skewImageTwo(QImage *newImage, int valx, int valy);

private:
   /////////////////////////////////////////////////////////////////////////
   /// tablica do inicializacji macierzy.
   /////////////////////////////////////////////////////////////////////////
   qreal tab[9];


};

#endif // SKEW_H
